home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2005 October / PCWOCT05.iso / Software / FromTheMag / Ant Movie Catalog 3.5.0.2 / amc_install.exe / {app} / Scripts / Stereo.pl.ifs < prev    next >
Text File  |  2005-03-13  |  17KB  |  478 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=Ketchup   (<link>ketchuppp@wp.pl</link>)
  8. Title=Stereo.pl
  9. Description=Movie information & picture importation
  10. Site=http://stereo.pl/
  11. Language=PL
  12. Version=
  13. Requires=3.5.0
  14. Comments= based on script 'Filmweb (PL) small pic.ifs'| by Piotr Kardasz & Adma's| Tlen Rulezzzzzzzzzzzz|
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19.  
  20. ***************************************************)
  21.  
  22. program Stereo;
  23. var
  24.   MovieName, AdressTemp: string;
  25.  
  26. function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
  27. var
  28.   i: Integer;
  29. begin
  30.   result := -1;
  31.   if StartAt < 0 then
  32.     StartAt := 0;
  33.   for i := StartAt to List.Count-1 do
  34.     if Pos(Pattern, List.GetString(i)) <> 0 then
  35.     begin
  36.       result := i;
  37.       Break;
  38.     end;
  39. end;
  40.  
  41. procedure DelSpace(var Value: String);
  42. var
  43.   FullValue: String;
  44.   Counter: Integer;
  45. begin
  46.   if Value <> '' then
  47.   begin
  48.     FullValue := FullValue + StrGet(Value, 1);
  49.     for Counter := 2 to Length(Value) do
  50.     begin
  51.       if StrGet(Value, Counter) <> ' ' then
  52.         FullValue := FullValue + StrGet(Value, Counter)
  53.       else
  54.         if StrGet(FullValue, Length(FullValue)) <> ' ' then
  55.           FullValue := FullValue + ' ';
  56.     end;
  57.     Value := FullValue;
  58.   end
  59. end;
  60.  
  61. procedure DecodeHTML(var Value: String);
  62. var
  63.   FullValue, CharCode: String;
  64.   Counter: Integer;
  65. begin
  66.   if Value <> '' then
  67.   begin
  68.     FullValue := '';
  69.     Counter := 1;
  70.     repeat
  71.       if StrGet(Value, Counter) <> '&' then
  72.         begin
  73.           CharCode := copy(Value, Counter, 1);
  74.           case CharCode of
  75.             '▒': CharCode := '╣';
  76.             '╢': CharCode := '£';
  77.             'í': CharCode := 'Ñ';
  78.             '╝': CharCode := 'ƒ';
  79.             'ª': CharCode := 'î';
  80.             '¼': CharCode := 'Å';
  81.           end;
  82.           FullValue := FullValue + CharCode;
  83.           Counter := Counter + 1;
  84.         end
  85.       else
  86.         begin
  87.           CharCode := copy(Value, Counter, 7);
  88.           case CharCode of
  89.             'ą': FullValue := FullValue + '╣';
  90.             'ć': FullValue := FullValue + 'µ';
  91.             'ę': FullValue := FullValue + 'Ω';
  92.             'ł': FullValue := FullValue + '│';
  93.             'ń': FullValue := FullValue + '±';
  94.             'ó': FullValue := FullValue + '≤';
  95.             'ś': FullValue := FullValue + '£';
  96.             'ź': FullValue := FullValue + 'ƒ';
  97.             'ż': FullValue := FullValue + '┐';
  98.             'Ą': FullValue := FullValue + 'Ñ';
  99.             'Ć': FullValue := FullValue + '╞';
  100.             'Ę': FullValue := FullValue + '╩';
  101.             'Ł': FullValue := FullValue + 'ú';
  102.             'Ń': FullValue := FullValue + '╤';
  103.             'Ó': FullValue := FullValue + '╙';
  104.             'Ś': FullValue := FullValue + 'î';
  105.             'Ź': FullValue := FullValue + 'Å';
  106.             'Ż': FullValue := FullValue + '»';
  107.             'Š': FullValue := FullValue + ' ';
  108.             'š': FullValue := FullValue + 'í';
  109.             'Ţ': FullValue := FullValue + 'í';
  110.             'ţ': FullValue := FullValue + 'ú';
  111.             'Ť': FullValue := FullValue + 'ñ';
  112.             'ť': FullValue := FullValue + 'Ñ';
  113.             'Ŧ': FullValue := FullValue + 'î';
  114.             'ŧ': FullValue := FullValue + 'º';
  115.             'Ũ': FullValue := FullValue + '¿';
  116.             'ũ': FullValue := FullValue + '⌐';
  117.             'Ű': FullValue := FullValue + '¬';
  118.             'ű': FullValue := FullValue + '½';
  119.             'Ų': FullValue := FullValue + '¼';
  120.             'ų': FullValue := FullValue + '¡';
  121.             'Ŵ': FullValue := FullValue + '«';
  122.             'ŵ': FullValue := FullValue + '»';
  123.             'Ŷ': FullValue := FullValue + '░';
  124.             'ŷ': FullValue := FullValue + '▒';
  125.             'Ÿ': FullValue := FullValue + '▓';
  126.             'ƀ': FullValue := FullValue + '┤';
  127.             'Ɓ': FullValue := FullValue + '╡';
  128.             'Ƃ': FullValue := FullValue + '╢';
  129.             'ƃ': FullValue := FullValue + '╖';
  130.             'Ƅ': FullValue := FullValue + '╕';
  131.             'ƅ': FullValue := FullValue + '╣';
  132.             'Ɔ': FullValue := FullValue + '║';
  133.             'Ƈ': FullValue := FullValue + '╗';
  134.             'ƈ': FullValue := FullValue + '╝';
  135.             'Ɖ': FullValue := FullValue + '╜';
  136.             'Ɛ': FullValue := FullValue + '╛';
  137.             'Ƒ': FullValue := FullValue + '┐';
  138.             'ƒ': FullValue := FullValue + '└';
  139.             'Ɠ': FullValue := FullValue + '┴';
  140.             'Ɣ': FullValue := FullValue + '┬';
  141.             'ƕ': FullValue := FullValue + '├';
  142.             'Ɩ': FullValue := FullValue + '─';
  143.             'Ɨ': FullValue := FullValue + '┼';
  144.             'Ƙ': FullValue := FullValue + '╞';
  145.             'ƙ': FullValue := FullValue + '╟';
  146.             'Ȁ': FullValue := FullValue + '╚';
  147.             'ȁ': FullValue := FullValue + '╔';
  148.             'Ȃ': FullValue := FullValue + '╩';
  149.             'ȃ': FullValue := FullValue + '╦';
  150.             'Ȅ': FullValue := FullValue + '╠';
  151.             'ȅ': FullValue := FullValue + '═';
  152.             'Ȇ': FullValue := FullValue + '╬';
  153.             'ȇ': FullValue := FullValue + '╧';
  154.             'Ȉ': FullValue := FullValue + '╨';
  155.             'ȉ': FullValue := FullValue + '╤';
  156.             'Ȑ': FullValue := FullValue + '╥';
  157.             'ȑ': FullValue := FullValue + '╙';
  158.             'Ȓ': FullValue := FullValue + '╘';
  159.             'ȓ': FullValue := FullValue + '╒';
  160.             'Ȕ': FullValue := FullValue + '╓';
  161.             'ȕ': FullValue := FullValue + '╫';
  162.             'Ȗ': FullValue := FullValue + '╪';
  163.             'ȗ': FullValue := FullValue + '┘';
  164.             'Ș': FullValue := FullValue + '┌';
  165.             'ș': FullValue := FullValue + '█';
  166.             'Ƞ': FullValue := FullValue + '▄';
  167.             'ȡ': FullValue := FullValue + '▌';
  168.             'Ȣ': FullValue := FullValue + '▐';
  169.             'ȣ': FullValue := FullValue + '▀';
  170.             'Ȥ': FullValue := FullValue + 'α';
  171.             'ȥ': FullValue := FullValue + 'ß';
  172.             'Ȧ': FullValue := FullValue + 'Γ';
  173.             'ȧ': FullValue := FullValue + 'π';
  174.             'Ȩ': FullValue := FullValue + 'Σ';
  175.             'ȩ': FullValue := FullValue + 'σ';
  176.             'Ȱ': FullValue := FullValue + 'µ';
  177.             'ȱ': FullValue := FullValue + 'τ';
  178.             'Ȳ': FullValue := FullValue + 'Φ';
  179.             'ȳ': FullValue := FullValue + 'Θ';
  180.             'ȴ': FullValue := FullValue + 'Ω';
  181.             'ȵ': FullValue := FullValue + 'δ';
  182.             'ȶ': FullValue := FullValue + '∞';
  183.             'ȷ': FullValue := FullValue + 'φ';
  184.             'ȸ': FullValue := FullValue + 'ε';
  185.             'ȹ': FullValue := FullValue + '∩';
  186.             'ɀ': FullValue := FullValue + '≡';
  187.             'Ɂ': FullValue := FullValue + '±';
  188.             'ɂ': FullValue := FullValue + '≥';
  189.             'Ƀ': FullValue := FullValue + '≤';
  190.             'Ʉ': FullValue := FullValue + '⌠';
  191.             'Ʌ': FullValue := FullValue + '⌡';
  192.             'Ɇ': FullValue := FullValue + '÷';
  193.             'ɇ': FullValue := FullValue + '≈';
  194.             'Ɉ': FullValue := FullValue + '°';
  195.             'ɉ': FullValue := FullValue + '∙';
  196.             'ɐ': FullValue := FullValue + '·';
  197.             'ɑ': FullValue := FullValue + '√';
  198.             'ɒ': FullValue := FullValue + 'ⁿ';
  199.             'ɓ': FullValue := FullValue + '²';
  200.             'ɔ': FullValue := FullValue + '■';
  201.             'ɕ': FullValue := FullValue + ' ';
  202.             '&#x%DF;': FullValue := FullValue + '▀';
  203.             '4': FullValue := FullValue + '"';    
  204.           else
  205.             FullValue := FullValue + CharCode;  
  206.           end;
  207.           Counter := Counter + 7;
  208.         end;
  209.     until Counter > Length(Value);
  210.     HTMLDecode(FullValue);
  211.     Value := FullValue;
  212.   end
  213. end;
  214.  
  215. procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
  216. var
  217.   Line: string;
  218.   MovieTitle, MovieAddress,temp: string;
  219.   StartPos, EndPos: Integer;
  220. begin
  221.   LineNr := FindLine('kam.gif', Page, LineNr);
  222.   if LineNr > -1 then
  223.   begin
  224.     PickTreeAdd('Znaleziono filmy:', '');
  225.     Line := Page.GetString(LineNr+1);
  226.     repeat
  227.       repeat
  228.         StartPos := pos('tytul_m href="', Line) + 14;
  229.         Line := copy(Line, StartPos, Length(Line) - StartPos);      
  230.         MovieAddress := copy(Line, 1, pos('">', Line) - 1);
  231.         StartPos := pos('">', Line) + 2;
  232.         Line := copy(Line, StartPos, Length(Line) - StartPos);
  233.         MovieTitle := copy(Line, 1, pos('</a>', Line) - 1);
  234.         DecodeHTML(MovieTitle);
  235.         HTMLRemoveTags(MovieTitle);
  236.         PickTreeAdd(MovieTitle, 'http://piwnicapodbaranami.stereo.pl/' + MovieAddress);
  237.       until pos('tytul_m href="', Line) = 0;
  238.       LineNr := LineNr + 1;
  239.       LineNr := FindLine('kam.gif', Page, LineNr);
  240.       Line := Page.GetString(LineNr+1);
  241.     until LineNr < 0;
  242.   end
  243.   else
  244.     break;
  245. end;
  246.  
  247. procedure AnalyzePage(Address: string);
  248. var
  249.   Page: TStringList;
  250.   LineNr: Integer;
  251. begin
  252.   Page := TStringList.Create;
  253.   AdressTemp := Address;
  254.   Page.Text := GetPage(Address);
  255.   if pos('Wyniki wyszukiwania', Page.Text) = 0 then
  256.     AnalyzeMoviePage(Page)
  257.   else
  258.   begin
  259.     PickTreeClear;
  260.     LineNr := 0;
  261.     AddMoviesTitles(Page, LineNr);
  262.     if PickTreeExec(Address) then
  263.       AnalyzePage(Address);
  264.   end;
  265.   Page.Free;
  266. end;
  267.  
  268. procedure AnalyzeMoviePage(Page: TStringList);
  269. var
  270.   Line, Value, FullValue, LineTemp, ValueTemp: string;
  271.   LineNr, Counter, Temp: Integer;
  272.   StartPos, EndPos, i: Integer;
  273. begin
  274. Temp := 0;
  275.   // Tytu│ polski
  276.   LineNr := FindLine('class=tytul', Page, 0);
  277.   if LineNr > -1 then
  278.   begin
  279.     Temp := 1;
  280.     Line := Page.GetString(LineNr);
  281.     LineTemp := Line;
  282.     StartPos := pos('<i>', Line) + 3;
  283.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  284.     StartPos := pos(' - [', Line);
  285.     if StartPos > 0 then Value := copy(Line, 1, StartPos - 1)
  286.       else
  287.       begin
  288.        StartPos := pos(' (', Line);
  289.        if StartPos > 0
  290.          then Value := copy(Line, 1, StartPos - 1)
  291.          else
  292.          begin
  293.          StartPos := pos('<br>', Line); 
  294.          Value := copy(Line, 1, StartPos - 1);
  295.          end       
  296.       end  
  297.     ValueTemp := Value;  
  298.     DecodeHTML(Value);
  299.     HTMLRemoveTags(Value); 
  300.     SetField(fieldTranslatedTitle, Value);
  301.   end
  302.  
  303.   // Tytu│ oryginalny
  304.   if Temp = 1 then
  305.   begin
  306.     Line := LineTemp;
  307.     StartPos := pos(' (', Line);
  308.     if StartPos > 0 then 
  309.       begin      
  310.        Line := copy(Line, StartPos + 2, Length(Line) - StartPos - 2);
  311.        StartPos := pos(')', Line);
  312.        Value := copy(Line, 1, StartPos - 1);
  313.        StartPos := pos('-', Value);
  314.        if StartPos > 0 then Value := copy(Value, 1, StartPos - 1); 
  315.       end
  316.       else
  317.       begin
  318.        Value := ValueTemp;
  319.       end    
  320.     DecodeHTML(Value);
  321.     HTMLRemoveTags(Value); 
  322.     SetField(fieldOriginalTitle, Value);
  323.   end
  324.     
  325.   // Rok produkcji
  326.   LineNr := FindLine('Rok premiery:', Page, 0);
  327.   if LineNr > -1 then
  328.   begin
  329.     Line := Page.GetString(LineNr);
  330.     StartPos := pos('Rok premiery:', Line) + 14;
  331.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  332.     StartPos := pos('<BR>', Line);
  333.     Value := copy(Line, 1, StartPos - 1);
  334.     SetField(fieldYear, Value);
  335.   end
  336.  
  337.   // Re┐yseria
  338.   LineNr := FindLine('Re┐yseria:', Page, 0);
  339.   if LineNr > -1 then
  340.   begin
  341.     Line := Page.GetString(LineNr + 3);
  342.     StartPos := pos('artysta.php', Line) + 11;
  343.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  344.     StartPos := pos('">', Line) + 2;
  345.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  346.     StartPos := pos('<', Line);
  347.     Value := copy(Line, 1, StartPos - 1);
  348.     HTMLRemoveTags(Value);
  349.     DecodeHTML(Value); 
  350.     SetField(fieldDirector, Value);
  351.   end
  352.  
  353.   // Producent
  354.   LineNr := FindLine('Wydawca:', Page, 0);
  355.   if LineNr > -1 then
  356.   begin
  357.     Line := Page.GetString(LineNr);
  358.     StartPos := pos('Wydawca: ', Line) + 9;
  359.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  360.     StartPos := pos(' <br>', Line);
  361.     Value := copy(Line, 1, StartPos - 2);
  362.     HTMLRemoveTags(Value);
  363.     DecodeHTML(Value); 
  364.     SetField(fieldProducer, Value);
  365.   end
  366.  
  367.   // Czas trwania
  368.   LineNr := FindLine('ú▒czny czas:', Page, 0);
  369.   if LineNr > -1 then
  370.   begin
  371.     Line := Page.GetString(LineNr);
  372.     StartPos := pos('ú▒czny czas:', Line) + 13;
  373.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  374.     StartPos := pos('min.', Line);
  375.     Value := copy(Line, 1, StartPos - 2);
  376.     SetField(fieldLength, Value);
  377.   end
  378.   
  379.   // Opis filmu
  380.     LineNr := FindLine('Opis:', Page, 0);
  381.     if StartPos > 0 then
  382.     begin 
  383.      Line := Page.GetString(LineNr);
  384.      StartPos := pos('Opis:', Line);      
  385.      Delete(Line, StartPos, 5);
  386.      StartPos := pos('</ul>', Line);
  387.      if StartPos > 0 then
  388.      begin
  389.       Delete(Line, StartPos, 5);
  390.       Insert(#13#10, Line, StartPos);
  391.      end
  392.      repeat
  393.       StartPos := pos('<li>', Line);
  394.       if StartPos > 0 then
  395.       begin 
  396.        Delete(Line, StartPos, 4);
  397.        Insert(#13#10 + '-', Line, StartPos);    
  398.       end
  399.      until StartPos = 0;
  400.      StartPos := pos('Dodatki:', Line);
  401.      if StartPos > 0 then
  402.       Line := copy(Line, 1, StartPos - 1);
  403.      HTMLRemoveTags(Line);
  404.      DecodeHTML(Line); 
  405.      DelSpace(Line);  
  406.      SetField(fieldDescription, Line);  
  407.     end  
  408.  
  409.   // Obsada
  410.   LineNr := FindLine('WystΩpuj', Page, 0);
  411.   i := 3;
  412.   Value := '';
  413.   if LineNr > -1 then
  414.   begin
  415.     repeat   
  416.      Line := Page.GetString(LineNr + i);  
  417.      StartPos := pos('artysta.php', Line) + 11;
  418.      Line := copy(Line, StartPos, Length(Line) - StartPos);
  419.      StartPos := pos('">', Line) + 2;
  420.      Line := copy(Line, StartPos, Length(Line) - StartPos);
  421.      StartPos := pos('<', Line);
  422.      Value := Value + copy(Line, 1, StartPos - 1) + ', ';
  423.      i := i + 2;
  424.     until pos('artysta.php', Page.GetString(LineNr + i)) = 0;
  425.     Value := copy(Value, 1, Length(Value) - 2);
  426.     HTMLRemoveTags(Value);
  427.     DecodeHTML(Value);     
  428.     SetField(fieldActors, Value);
  429.   end
  430.   
  431.   //URL
  432.   begin
  433.     setField(fieldURL, AdressTemp);
  434.   end
  435.   
  436.  //Foto
  437.   LineNr:= FindLine('okladka.php', Page, 0);
  438.   if LineNr > -1
  439.    then begin
  440.     Line:= Page.GetString(LineNr);
  441.     StartPos:= Pos('okladka.php', Line);
  442.     Line := copy(Line, StartPos, Length(Line) - StartPos);
  443.     EndPos:=Pos(#39#44, Line) - 1;
  444.     Line:= Copy(Line, 1, EndPos);
  445.     Value:= 'http://piwnicapodbaranami.stereo.pl/' + Line;
  446.     Page.Text := GetPage(Value);
  447.     LineNr:= FindLine('<img src="', Page, 0);
  448.     if LineNr > -1
  449.      then begin
  450.       Line:= Page.GetString(LineNr);
  451.       StartPos:= Pos('<img src="', Line) + 11;
  452.       Line := copy(Line, StartPos, Length(Line) - StartPos);
  453.       EndPos:=Pos('">', Line) - 1;
  454.       Line:= Copy(Line, 1, EndPos);
  455.       Value:= 'http://piwnicapodbaranami.stereo.pl/' + Line;
  456.      end
  457.     GetPicture(Value); // False = nie przechowuj zdjΩcia na zewnΩtrz ; przechowuj w pliku katalogu
  458.   end
  459.  
  460.   //DisplayResults;
  461. end;
  462.  
  463. begin
  464.   if CheckVersion(3,5,0) then
  465.   begin
  466.     MovieName := GetField(fieldOriginalTitle);
  467.     if MovieName = '' then
  468.       MovieName := GetField(fieldTranslatedTitle);
  469.     if Input('FilmWeb Import', 'Podaj tytu│ filmu:', MovieName) then
  470.     begin
  471.       AnalyzePage('http://piwnicapodbaranami.stereo.pl/most.php?szuk='+UrlEncode(MovieName));
  472.     end;
  473.   end else
  474.     ShowMessage('Skrypt wymaga programu Ant Movie Catalog w wersji 3.5.0 lub nowszej');
  475. end.
  476.  
  477.  
  478.